import Vue from "vue"

import Cookies from "js-cookie"

import "normalize.css/normalize.css" // a modern alternative to CSS resets

import Element from "element-ui"
// import Echarts from "echarts"
import * as Echarts from 'echarts';
import dataV from "@jiaminghi/data-view"
// import VueParticles from "vue-particles" // canvas背景图
import Icon from "vue-awesome/components/Icon"
import "vue-awesome/icons/chart-bar.js"
import "vue-awesome/icons/chart-area.js"
import "vue-awesome/icons/chart-pie.js"
import "vue-awesome/icons/chart-line.js"
import "vue-awesome/icons/align-left.js"

import "./assets/styles/element-variables.scss"

import "@/assets/styles/index.scss" // global css
import "@/assets/styles/ruoyi.scss" // ruoyi css
import 'animate.css';
import App from "./App"
import store from "./store"
import router from "./router"
import permission from "./directive/permission"
import directive from "./directive";

import "./assets/icons" // icon
import "./permission" // permission control
import { getDicts } from "@/api/system/dict/data"
import { getConfigKey } from "@/api/system/config"
import {
  parseTime,
  resetForm,
  addDateRange,
  selectDictLabel,
  generateUUID,
  resetSetItem
} from "@/utils/ruoyi"
import Pagination from "@/components/Pagination"
import Pane from "@/components/Pane"
import $ from "jquery"
import "@/assets/zTree/js/jquery.ztree.core"
import "@/assets/zTree/js/jquery.ztree.excheck"
import VueClipboard from "vue-clipboard2"
require("./mock/index");

// 全局监听sessionStorage的communityId变化
Vue.prototype.resetSetItem = resetSetItem

// 全局方法挂载
Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.generateUUID = generateUUID

Vue.prototype.msgSuccess = function (msg) {
  this.$message({ showClose: true, message: msg, type: "success" })
}

Vue.prototype.msgError = function (msg) {
  this.$message({ showClose: true, message: msg, type: "error" })
}

Vue.prototype.msgWarning = function (msg) {
  this.$message({ showClose: true, message: msg, type: "warning" })
}

Vue.prototype.msgInfo = function (msg) {
  this.$message.info(msg)
}

Vue.prototype.$echarts = Echarts

// 全局组件挂载
Vue.component("Pagination", Pagination)
Vue.component("Pane", Pane)
Vue.component("icon", Icon)

Vue.use(dataV)
// Vue.use(VueParticles)
Vue.use(permission)
Vue.use(directive)
Vue.use(VueClipboard)
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */

Vue.use(Element, {
  size: Cookies.get("size") || "medium" // set element-ui default size
})

Vue.config.productionTip = false
VueClipboard.config.autoSetContainer = true
new Vue({
  el: "#app",
  router,
  store,
  render: h => h(App)
})
